﻿using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LibQuestionIs.Enums;
using LibQuestionIs.Models;

namespace LibQuestionIs.Managers
{
    public class ManagerDomande
    {
        public async Task<List<SingolaDomanda>> LoadQuestionario(int IdDifficolta, long IdTipologiaTest)
        {
            var request = new InfoAppService.GetAllQuestionarioRequest()
            {
                IdDifficolta = IdDifficolta,
                idTipologiaTest = IdTipologiaTest,
            };
            var response = await new InfoAppService.QuizServiceClient().GetAllQuestionarioAsync(request);
            List<SingolaDomanda> listadomande =
                (from dom in response.Questionario.ListaDomande
                 select new SingolaDomanda()
                 {
                     IDDomanda = dom.IdDomanda,
                     IndexDomanda = response.Questionario.ListaDomande.IndexOf(dom) + 1,
                     MaxDomanda = response.Difficolta.NumMaxDomande,
                     TestoDomanda = dom.Domanda,
                     isCorretta = TypeRispostaDomanda.NonRisposta,
                     ElencoRisposte =
                     (from risp in dom.PossibiliRisposte
                      select new SingolaRisposta()
                      {
                          IDRisposta = risp.IdPossibileRisposta,
                          TestoRisposta = risp.DescrizioneRisposta,
                          IsCorretto = risp.IsCorretta,
                      }).ToList()
                 }).ToList();

            for (int i = 0; i < listadomande.Count; i++)
            {
                var singleDomanda = listadomande[i];
                for (int j = 0; j < singleDomanda.ElencoRisposte.Count; j++)
                    singleDomanda.ElencoRisposte[j].IndexRisposta = (short)(j + 1);
            }
            return listadomande;
        }
    }
}
